home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d11 / basmus.arc / SCALES.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1990-09-29  |  12.5 KB  |  353 lines

  1. 10  REM - This is SCALES
  2. 20  CLS: KEY OFF: COLOR 0,7,0
  3. 30  PRINT " Musical Scales "
  4. 40  REM - By Robert Braunwart
  5. 50  COLOR 7,0,0
  6. 60  DEF SEG = &H40 : POKE &H17, PEEK (&H17) AND 139
  7. 70  DIM I(15): DIM R$(15): DIM A(15)
  8. 80  PRINT: PRINT
  9. 90  PRINT "SEVENTEEN SCALE TYPES -- Major, Minor, Modal, Whole Tone and Pentatonic"
  10. 100  PRINT
  11. 110  PRINT "This program prints in letter names one octave upward, the major, the"
  12. 120  PRINT "natural, harmonic, melodic, and Hungarian minors, the Dorian, Phrygian,"
  13. 130  PRINT "Lydian, Mixolydian, and Locrian modes, and the whole tone, chromatic and"
  14. 140  PRINT "pentatonic scales.": PRINT
  15. 150  PRINT "Use a 3- or 4-character input:  the first 2 characters are the scale type,"
  16. 160  PRINT "and the 3rd character is the single letter tonic, or the last two char-"
  17. 170  PRINT "acters are the tonic degree or the key signature (for diatonic scales)."
  18. 180  PRINT
  19. 190  PRINT "SCALE TYPES -- ma na ha me do ph ly mi lo hu wh ch p1 p2 p3 p4 p5": PRINT
  20. 200  PRINT "EXAMPLES:  madb lyfb mieb phgb huf# hag# mea# whc# chc p3d lo0 do3# na6b"
  21. 210  A$="C C#D D#E F F#G G#A A#B C C#D D#E F F#G G#A A#B "
  22. 220  B$="B#C#D D#E E#F#G G#A A#B B#C#D D#E E#F#G G#A A#B "
  23. 230  C$="B#BxCxD#DxE#ExFxG#GxA#AxB#BxCxD#DxE#ExFxG#GxA#Ax"
  24. 240  D$="B#C#CxD#DxE#F#FxG#GxA#AxB#C#CxD#DxE#F#FxG#GxA#Ax"
  25. 250  E$="B#C#CxD#E E#F#FxG#A A#B B#C#CxD#E E#F#FxG#A A#B "
  26. 260  F$="C C#CxD#E E#F#FxG#GxA#B C C#CxD#E E#F#FxG#GxA#B "
  27. 270  G$="C DbD EbE F GbG AbA BbB C DbD EbE F GbG AbA BbB "
  28. 280  H$="C DbD EbFbF GbG AbA BbCbC DbD EbFbF GbG AbA BbCb"
  29. 290  I$="DdDbEdFdFbGdGbAdAbBdCdCbDdDbEdFdFbGdGbAdAbBdCdCb"
  30. 300  J$="C DbEdEbFbF GbG AbBdBbCbC DbEdEbFbF GbG AbBdBbCb"
  31. 310  K$="DdDbEdEbFbF GbAdAbBdBbCbDdDbEdEbFbF GbAdAbBdBbCb"
  32. 320  L$="C C#D EbE F F#G G#A BbB C C#D EbE F F#G G#A BbB "
  33. 330  M$="C C#D EbE F F#G AbA BbB C C#D EbE F F#G AbA BbB "
  34. 340  GOTO 360
  35. 350  PRINT: PRINT "No such scale."
  36. 360  PRINT: PRINT: PRINT TAB(8);"Which type of scale is wanted ('x' to end)";
  37. 370  INPUT N$
  38. 380  IF N$="" THEN PRINT: GOTO 190
  39. 390  IF N$="x" THEN 3510
  40. 400  O$="manahamedophlymilohuwhchp1p2p3p4p5"
  41. 410  FOR X=1 TO 34 STEP 2
  42. 420  IF LEFT$(N$,2)=MID$(O$,X,2) THEN 440
  43. 430  NEXT X
  44. 440  Q=(X+1)/2
  45. 450  IF ASC(MID$(N$,3,1))>96 THEN P$=CHR$(ASC(MID$(N$,3,1))-32): GOTO 470
  46. 460  P$=MID$(N$,3,1)
  47. 470  IF P$="H" THEN P$="B"
  48. 480  IF ASC(P$)>73 GOTO 350
  49. 490  Q$=MID$(N$,4,1)
  50. 500  IF Q$="" THEN Q$=" "
  51. 510  R$(1)=P$+Q$: GOTO 570
  52. 520  FOR X=1 TO 150 STEP 2
  53. 530  IF R$(1)=MID$(A$,X,2) THEN 550
  54. 540  NEXT X
  55. 550  R=X
  56. 560  RETURN
  57. 570  N=7: PRINT
  58. 580  ON Q GOTO 590, 840, 1100, 1230, 1360, 1620, 1870, 2110, 2370, 2610, 2770, 2830, 2900, 2960, 3020, 3080, 3140, 350
  59. 590  IF R$(1)="0 " THEN R$(1)="C ":
  60. 600  IF R$(1)="1#" OR R$(1)="# " THEN R$(1)="G "
  61. 610  IF R$(1)="2#" THEN R$(1)="D "
  62. 620  IF R$(1)="3#" THEN R$(1)="A "
  63. 630  IF R$(1)="4#" THEN R$(1)="E "
  64. 640  IF R$(1)="5#" THEN R$(1)="B "
  65. 650  IF R$(1)="6#" THEN R$(1)="F#"
  66. 660  IF R$(1)="7#" THEN R$(1)="C#"
  67. 670  IF R$(1)="1b" THEN R$(1)="F "
  68. 680  IF R$(1)="2b" THEN R$(1)="Bb"
  69. 690  IF R$(1)="3b" THEN R$(1)="Eb"
  70. 700  IF R$(1)="4b" THEN R$(1)="Ab"
  71. 710  IF R$(1)="5b" THEN R$(1)="Db"
  72. 720  IF R$(1)="6b" THEN R$(1)="Gb"
  73. 730  IF R$(1)="7b" THEN R$(1)="Cb"
  74. 740  PRINT: PRINT "Major (Ionian) Scale on ";R$(1)
  75. 750  IF R$(1)="G#" THEN A$=D$: GOTO 810
  76. 760  IF R$(1)="C#" OR R$(1)="F#" THEN A$=B$: GOTO 810
  77. 770  IF R$(1)="A#" OR R$(1)="B#" OR R$(1)="D#" OR R$(1)="E#" OR R$(1)="G#" THEN A$=C$: GOTO 810
  78. 780  IF R$(1)="Gb" OR R$(1)="Cb" THEN A$=H$: GOTO 810
  79. 790  IF R$(1)="Fb" THEN A$=J$: GOTO 810
  80. 800  IF R$(1)="F " OR Q$="b" THEN A$=G$
  81. 810  GOSUB 520
  82. 820  I(1)=2: I(2)=4: I(3)=5: I(4)=7: I(5)=9: I(6)=11: I(7)=12
  83. 830  GOTO 3190
  84. 840  IF R$(1)="0 " THEN R$(1)="A ":
  85. 850  IF R$(1)="1#" OR R$(1)="# " THEN R$(1)="E "
  86. 860  IF R$(1)="2#" THEN R$(1)="B "
  87. 870  IF R$(1)="3#" THEN R$(1)="F#"
  88. 880  IF R$(1)="4#" THEN R$(1)="C#"
  89. 890  IF R$(1)="5#" THEN R$(1)="G#"
  90. 900  IF R$(1)="6#" THEN R$(1)="D#"
  91. 910  IF R$(1)="7#" THEN R$(1)="A#"
  92. 920  IF R$(1)="1b" THEN R$(1)="D "
  93. 930  IF R$(1)="2b" THEN R$(1)="G "
  94. 940  IF R$(1)="3b" THEN R$(1)="C "
  95. 950  IF R$(1)="4b" THEN R$(1)="F "
  96. 960  IF R$(1)="5b" THEN R$(1)="Bb"
  97. 970  IF R$(1)="6b" THEN R$(1)="Eb"
  98. 980  IF R$(1)="7b" THEN R$(1)="Ab"
  99. 990  PRINT: PRINT "Natural Minor (Aeolian) Scale on ";R$(1)
  100. 1000  IF R$(1)="E#" THEN A$=D$: GOTO 1070
  101. 1010  IF R$(1)="A#" OR R$(1)="C#" OR R$(1)="D#" THEN A$=B$: GOTO 1070
  102. 1020  IF R$(1)="B#" OR R$(1)="E#" THEN A$=C$: GOTO 1070
  103. 1030  IF R$(1)="Cb" OR R$(1)="Fb" OR R$(1)="Gb" THEN A$=I$: GOTO 1070
  104. 1040  IF R$(1)="Ab" OR R$(1)="Eb" OR R$(1)="G " THEN A$=H$: GOTO 1070
  105. 1050  IF R$(1)="Db" THEN A$=J$: GOTO 1070
  106. 1060  IF R$(1)="C " OR R$(1)="D " OR R$(1)="Fb" OR R$(1)="F " OR Q$="b" THEN A$=G$
  107. 1070  GOSUB 520
  108. 1080  I(1)=2: I(2)=3: I(3)=5: I(4)=7: I(5)=8: I(6)=10: I(7)=12
  109. 1090  GOTO 3190
  110. 1100  PRINT: PRINT "Harmonic Minor Scale on ";R$(1)
  111. 1110  IF R$(1)="D " OR R$(1)="G " THEN A$=L$: GOTO 1200
  112. 1120  IF R$(1)="A#" OR R$(1)="E#" THEN A$=D$: GOTO 1200
  113. 1130  IF R$(1)="B#" THEN A$=C$: GOTO 1200
  114. 1140  IF R$(1)="D#" OR R$(1)="G#" THEN A$=F$: GOTO 1200
  115. 1150  IF Q$="#" THEN A$=B$: GOTO 1200
  116. 1160  IF R$(1)="Cb" OR R$(1)="Fb" THEN A$=K$: GOTO 1200
  117. 1170  IF R$(1)="Db" OR R$(1)="Gb" THEN A$=J$: GOTO 1200
  118. 1180  IF Q$="b" THEN A$=H$: GOTO 1200
  119. 1190  IF R$(1)="C " OR R$(1)="F " THEN A$=G$
  120. 1200  GOSUB 520
  121. 1210  I(1)=2: I(2)=3: I(3)=5: I(4)=7: I(5)=8: I(6)=11: I(7)=12
  122. 1220  GOTO 3190
  123. 1230  PRINT: PRINT "Melodic Minor Scale on ";R$(1)
  124. 1240  IF R$(1)="G " THEN A$=L$: GOTO 1330
  125. 1250  IF R$(1)="A#" OR R$(1)="D#" THEN A$=D$: GOTO 1330
  126. 1260  IF R$(1)="B#" OR R$(1)="E#" THEN A$=C$: GOTO 1330
  127. 1270  IF R$(1)="G#" THEN A$=F$: GOTO 1330
  128. 1280  IF Q$="#" THEN A$=B$: GOTO 1330
  129. 1290  IF R$(1)="Cb" THEN A$=J$: GOTO 1330
  130. 1300  IF R$(1)="Fb" OR R$(1)="Gb" THEN A$=K$: GOTO 1330
  131. 1310  IF Q$="b" THEN A$=H$: GOTO 1330
  132. 1320  IF R$(1)="C " OR R$(1)="F " OR R$(1)="G " THEN A$=G$
  133. 1330  GOSUB 520
  134. 1340  I(1)=2: I(2)=3: I(3)=5: I(4)=7: I(5)=9: I(6)=11: I(7)=12
  135. 1350  GOTO 3190
  136. 1360  IF R$(1)="0 " THEN R$(1)="D ":
  137. 1370  IF R$(1)="1#" OR R$(1)="# " THEN R$(1)="A "
  138. 1380  IF R$(1)="2#" THEN R$(1)="E "
  139. 1390  IF R$(1)="3#" THEN R$(1)="B "
  140. 1400  IF R$(1)="4#" THEN R$(1)="F#"
  141. 1410  IF R$(1)="5#" THEN R$(1)="C#"
  142. 1420  IF R$(1)="6#" THEN R$(1)="G#"
  143. 1430  IF R$(1)="7#" THEN R$(1)="D#"
  144. 1440  IF R$(1)="1b" THEN R$(1)="G "
  145. 1450  IF R$(1)="2b" THEN R$(1)="C "
  146. 1460  IF R$(1)="3b" THEN R$(1)="F "
  147. 1470  IF R$(1)="4b" THEN R$(1)="Bb"
  148. 1480  IF R$(1)="5b" THEN R$(1)="Eb"
  149. 1490  IF R$(1)="6b" THEN R$(1)="Ab"
  150. 1500  IF R$(1)="7b" THEN R$(1)="Db"
  151. 1510  PRINT: PRINT "Dorian Mode on ";R$(1)
  152. 1520  IF R$(1)="A#" THEN A$=D$: GOTO 1590
  153. 1530  IF R$(1)="B#" OR R$(1)="E#" THEN A$=C$: GOTO 1590
  154. 1540  IF Q$="#" THEN A$=B$: GOTO 1590
  155. 1550  IF R$(1)="Cb" OR R$(1)="Fb" THEN A$=I$: GOTO 1590
  156. 1560  IF R$(1)="Gb" THEN A$=J$: GOTO 1590
  157. 1570  IF R$(1)="Ab" OR R$(1)="Bb" OR R$(1)="Db" OR R$(1)="Eb" THEN A$=H$: GOTO 1590
  158. 1580  IF R$(1)="C " OR R$(1)="F " OR R$(1)="G " THEN A$=G$
  159. 1590  GOSUB 520
  160. 1600  I(1)=2: I(2)=3: I(3)=5: I(4)=7: I(5)=9: I(6)=10: I(7)=12
  161. 1610  GOTO 3190
  162. 1620  IF R$(1)="0 " THEN R$(1)="E ":
  163. 1630  IF R$(1)="1#" OR R$(1)="# " THEN R$(1)="B "
  164. 1640  IF R$(1)="2#" THEN R$(1)="F#"
  165. 1650  IF R$(1)="3#" THEN R$(1)="C#"
  166. 1660  IF R$(1)="4#" THEN R$(1)="G#"
  167. 1670  IF R$(1)="5#" THEN R$(1)="D#"
  168. 1680  IF R$(1)="6#" THEN R$(1)="A#"
  169. 1690  IF R$(1)="7#" THEN R$(1)="E#"
  170. 1700  IF R$(1)="1b" THEN R$(1)="A "
  171. 1710  IF R$(1)="2b" THEN R$(1)="D "
  172. 1720  IF R$(1)="3b" THEN R$(1)="G "
  173. 1730  IF R$(1)="4b" THEN R$(1)="C "
  174. 1740  IF R$(1)="5b" THEN R$(1)="F "
  175. 1750  IF R$(1)="6b" THEN R$(1)="Bb"
  176. 1760  IF R$(1)="7b" THEN R$(1)="Eb"
  177. 1770  PRINT: PRINT "Phrygian Mode on ";R$(1)
  178. 1780  IF R$(1)="B#" THEN A$=D$: GOTO 1840
  179. 1790  IF R$(1)="A#" OR R$(1)="C#" OR R$(1)="D#" OR R$(1)="E#" OR R$(1)="F#" OR R$(1)="G#" THEN A$=B$: GOTO 1840
  180. 1800  IF R$(1)="Bb" OR R$(1)="Eb" THEN A$=H$: GOTO 1840
  181. 1810  IF R$(1)="Ab" THEN A$=J$: GOTO 1840
  182. 1820  IF R$(1)="Cb" OR R$(1)="Db" OR R$(1)="Fb" OR R$(1)="Gb" THEN A$=I$: GOTO 1840
  183. 1830  IF R$(1)="A " OR R$(1)="C " OR R$(1)="D " OR R$(1)="F " OR R$(1)="G " THEN A$=G$
  184. 1840  GOSUB 520
  185. 1850  I(1)=1: I(2)=3: I(3)=5: I(4)=7: I(5)=8: I(6)=10: I(7)=12
  186. 1860  GOTO 3190
  187. 1870  IF R$(1)="0 " THEN R$(1)="F ":
  188. 1880  IF R$(1)="1#" OR R$(1)="# " THEN R$(1)="C "
  189. 1890  IF R$(1)="2#" THEN R$(1)="G "
  190. 1900  IF R$(1)="3#" THEN R$(1)="D "
  191. 1910  IF R$(1)="4#" THEN R$(1)="A "
  192. 1920  IF R$(1)="5#" THEN R$(1)="E "
  193. 1930  IF R$(1)="6#" THEN R$(1)="B "
  194. 1940  IF R$(1)="7#" THEN R$(1)="F#"
  195. 1950  IF R$(1)="1b" THEN R$(1)="Bb"
  196. 1960  IF R$(1)="2b" THEN R$(1)="Eb"
  197. 1970  IF R$(1)="3b" THEN R$(1)="Ab"
  198. 1980  IF R$(1)="4b" THEN R$(1)="Db"
  199. 1990  IF R$(1)="5b" THEN R$(1)="Gb"
  200. 2000  IF R$(1)="6b" THEN R$(1)="Cb"
  201. 2010  IF R$(1)="7b" THEN R$(1)="Fb"
  202. 2020  PRINT: PRINT "Lydian Mode on ";R$(1)
  203. 2030  IF R$(1)="C#" THEN A$=D$: GOTO 2080
  204. 2040  IF R$(1)="B " OR R$(1)="F#" THEN A$=B$: GOTO 2080
  205. 2050  IF R$(1)="A#" OR R$(1)="B#" OR R$(1)="D#" OR R$(1)="E#" OR R$(1)="G#" THEN A$=C$: GOTO 2080
  206. 2060  IF R$(1)="Bb" OR R$(1)="F " THEN A$=G$: GOTO 2080
  207. 2070  IF R$(1)="Ab" OR R$(1)="Cb" OR R$(1)="Db" OR R$(1)="Eb" OR R$(1)="Fb" OR R$(1)="Gb" THEN A$=H$
  208. 2080  GOSUB 520
  209. 2090  I(1)=2: I(2)=4: I(3)=6: I(4)=7: I(5)=9: I(6)=11: I(7)=12
  210. 2100  GOTO 3190
  211. 2110  IF R$(1)="0 " THEN R$(1)="G "
  212. 2120  IF R$(1)="1#" OR R$(1)="# " THEN R$(1)="D "
  213. 2130  IF R$(1)="2#" THEN R$(1)="A "
  214. 2140  IF R$(1)="3#" THEN R$(1)="E "
  215. 2150  IF R$(1)="4#" THEN R$(1)="B "
  216. 2160  IF R$(1)="5#" THEN R$(1)="F#"
  217. 2170  IF R$(1)="6#" THEN R$(1)="C#"
  218. 2180  IF R$(1)="7#" THEN R$(1)="G#"
  219. 2190  IF R$(1)="1b" THEN R$(1)="C "
  220. 2200  IF R$(1)="2b" THEN R$(1)="F "
  221. 2210  IF R$(1)="3b" THEN R$(1)="Bb"
  222. 2220  IF R$(1)="4b" THEN R$(1)="Eb"
  223. 2230  IF R$(1)="5b" THEN R$(1)="Ab"
  224. 2240  IF R$(1)="6b" THEN R$(1)="Db"
  225. 2250  IF R$(1)="7b" THEN R$(1)="Gb"
  226. 2260  PRINT: PRINT "Mixolydian Mode on ";R$(1)
  227. 2270  IF R$(1)="D#" THEN A$=D$: GOTO 2340
  228. 2280  IF R$(1)="C#" OR R$(1)="G#" THEN A$=B$: GOTO 2340
  229. 2290  IF R$(1)="A#" OR R$(1)="B#" OR R$(1)="E#" THEN A$=C$: GOTO 2340
  230. 2300  IF R$(1)="Fb" THEN A$=I$: GOTO 2340
  231. 2310  IF R$(1)="Bb" OR R$(1)="C " OR R$(1)="F " THEN A$=G$
  232. 2320  IF R$(1)="Cb" THEN A$=J$: GOTO 2340
  233. 2330  IF R$(1)="Ab" OR R$(1)="Db" OR R$(1)="Eb" OR R$(1)="Gb" THEN A$=H$
  234. 2340  GOSUB 520
  235. 2350  I(1)=2: I(2)=4: I(3)=5: I(4)=7: I(5)=9: I(6)=10: I(7)=12
  236. 2360  GOTO 3190
  237. 2370  IF R$(1)="0 " THEN R$(1)="B "
  238. 2380  IF R$(1)="1#" OR R$(1)="# " THEN R$(1)="F#"
  239. 2390  IF R$(1)="2#" THEN R$(1)="C#"
  240. 2400  IF R$(1)="3#" THEN R$(1)="G#"
  241. 2410  IF R$(1)="4#" THEN R$(1)="D#"
  242. 2420  IF R$(1)="5#" THEN R$(1)="A#"
  243. 2430  IF R$(1)="6#" THEN R$(1)="E#"
  244. 2440  IF R$(1)="7#" THEN R$(1)="B#"
  245. 2450  IF R$(1)="1b" THEN R$(1)="E "
  246. 2460  IF R$(1)="2b" THEN R$(1)="A "
  247. 2470  IF R$(1)="3b" THEN R$(1)="D "
  248. 2480  IF R$(1)="4b" THEN R$(1)="G "
  249. 2490  IF R$(1)="5b" THEN R$(1)="C "
  250. 2500  IF R$(1)="6b" THEN R$(1)="F "
  251. 2510  IF R$(1)="7b" THEN R$(1)="Bb"
  252. 2520  PRINT: PRINT "Locrian Mode on ";R$(1)
  253. 2530  IF R$(1)="A#" OR R$(1)="B#" OR R$(1)="C#" OR R$(1)="D#" OR R$(1)="E#" OR R$(1)="G#" THEN A$=B$: GOTO 2580
  254. 2540  IF R$(1)="Bb" OR R$(1)="F " THEN A$=H$: GOTO 2580
  255. 2550  IF R$(1)="A " OR R$(1)="B " OR R$(1)="C " OR R$(1)="D " OR R$(1)="E " OR R$(1)="G " THEN A$=G$: GOTO 2580
  256. 2560  IF R$(1)="Eb" THEN A$=J$: GOTO 2580
  257. 2570  IF R$(1)="Ab" OR R$(1)="Cb" OR R$(1)="Db" OR R$(1)="Fb" OR R$(1)="Gb" THEN A$=I$
  258. 2580  GOSUB 520
  259. 2590  I(1)=1: I(2)=3: I(3)=5: I(4)=6: I(5)=8: I(6)=10: I(7)=12
  260. 2600  GOTO 3190
  261. 2610  PRINT: PRINT "Hungarian (Gypsy) Minor on ";R$(1)
  262. 2620  IF R$(1)="C#" THEN A$=E$: GOTO 2740
  263. 2630  IF R$(1)="C " THEN A$=M$: GOTO 2740
  264. 2640  IF R$(1)="D " OR R$(1)="G " THEN A$=L$: GOTO 2740
  265. 2650  IF R$(1)="A#" OR R$(1)="E#" THEN A$=D$: GOTO 2740
  266. 2660  IF R$(1)="B#" THEN A$=C$: GOTO 2740
  267. 2670  IF R$(1)="D#" OR R$(1)="G#" THEN A$=F$: GOTO 2740
  268. 2680  IF R$(1)="B " OR R$(1)="F#" THEN A$=B$: GOTO 2740
  269. 2690  IF R$(1)="Ab" OR R$(1)="Eb" THEN A$=H$: GOTO 2740
  270. 2700  IF R$(1)="Cb" OR R$(1)="Fb" THEN A$=K$: GOTO 2740
  271. 2710  IF R$(1)="Bb" OR R$(1)="C " OR R$(1)="F " THEN A$=G$: GOTO 2740
  272. 2720  IF R$(1)="Db" OR R$(1)="Gb" THEN A$=J$: GOTO 2740
  273. 2730  IF Q$="b" THEN D$=G$
  274. 2740  GOSUB 520
  275. 2750  I(1)=2: I(2)=3: I(3)=6: I(4)=7: I(5)=8: I(6)=11: I(7)=12
  276. 2760  GOTO 3190
  277. 2770  PRINT: PRINT "Whole Tone Scale on ";R$(1)
  278. 2780  IF R$(1)="B#" OR R$(1)="E#" THEN A$=B$: GOTO 2800
  279. 2790  IF Q$="b" THEN A$=H$
  280. 2800  GOSUB 520
  281. 2810  N=6: I(1)=2: I(2)=4: I(3)=6: I(4)=8: I(5)=10: I(6)=12
  282. 2820  GOTO 3190
  283. 2830  PRINT: PRINT "Chromatic Scale on ";R$(1)
  284. 2840  IF R$(1)="B#" OR R$(1)="E#" THEN A$=B$: GOTO 2870
  285. 2850  IF R$(1)="Cb" OR R$(1)="Fb" THEN A$=H$: GOTO 2870
  286. 2860  IF Q$="b" THEN A$=G$
  287. 2870  GOSUB 520
  288. 2880  N=12: I(1)=1: I(2)=2: I(3)=3: I(4)=4: I(5)=5: I(6)=6: I(7)=7: I(8)=8: I(9)=9: I(10)=10: I(11)=11: I(12)=12
  289. 2890  GOTO 3190
  290. 2900  PRINT: PRINT "First Pentatonic Scale on ";R$(1)
  291. 2910  IF R$(1)="B#" OR R$(1)="E#" OR R$(1)="F#" THEN A$=B$: GOTO 2930
  292. 2920  IF Q$="b" THEN A$=H$
  293. 2930  GOSUB 520
  294. 2940  N=5: I(1)=2: I(2)=5: I(3)=7: I(4)=9: I(5)=12
  295. 2950  GOTO 3190
  296. 2960  PRINT: PRINT "Second Pentatonic Scale on ";R$(1)
  297. 2970  IF R$(1)="B#" OR R$(1)="E#" THEN A$=B$: GOTO 2990
  298. 2980  IF Q$="b" THEN A$=H$
  299. 2990  GOSUB 520
  300. 3000  N=5: I(1)=3: I(2)=5: I(3)=7: I(4)=10: I(5)=12
  301. 3010  GOTO 3190
  302. 3020  PRINT: PRINT "Third Pentatonic Scale on ";R$(1)
  303. 3030  IF R$(1)="B#" OR R$(1)="E#" THEN A$=B$: GOTO 3050
  304. 3040  IF Q$="b" THEN A$=H$
  305. 3050  GOSUB 520
  306. 3060  N=5: I(1)=2: I(2)=4: I(3)=7: I(4)=9: I(5)=12
  307. 3070  GOTO 3190
  308. 3080  PRINT: PRINT "Fourth Pentatonic Scale on ";R$(1)
  309. 3090  IF R$(1)="B#" OR R$(1)="E#" THEN A$=B$: GOTO 3110
  310. 3100  IF Q$="b" THEN A$=H$
  311. 3110  GOSUB 520
  312. 3120  N=5: I(1)=2: I(2)=5: I(3)=7: I(4)=10: I(5)=12
  313. 3130  GOTO 3190
  314. 3140  PRINT: PRINT "Fifth Pentatonic Scale on ";R$(1)
  315. 3150  IF R$(1)="B#" OR R$(1)="E#" THEN A$=B$: GOTO 3170
  316. 3160  IF Q$="b" THEN A$=H$
  317. 3170  GOSUB 520
  318. 3180  N=5: I(1)=3: I(2)=5: I(3)=8: I(4)=10: I(5)=12
  319. 3190  FOR X=2 TO N+1
  320. 3200  R$(X)=MID$(A$,R+(2*I(X-1)),2)
  321. 3210  NEXT X
  322. 3220  FOR X=1 TO N+1
  323. 3230  IF RIGHT$(R$(X),1)="d" THEN R$(X)=LEFT$(R$(X),1)+"bb"
  324. 3240  IF RIGHT$(R$(X),1)="x" THEN R$(X)=LEFT$(R$(X),1)+"##"
  325. 3250  IF LEN(R$(X))=2 THEN R$(X)=R$(X)+" "
  326. 3260  NEXT X
  327. 3270  PRINT: FOR X=1 TO N+1: PRINT R$(X);"  ";
  328. 3280  NEXT X
  329. 3290  GOSUB 3330
  330. 3300  FOR X=1 TO N+1: PLAY "MBL4N"+STR$(A(X))
  331. 3310  NEXT X
  332. 3320  PRINT: GOTO 210
  333. 3330  FOR J=1 TO N+1
  334. 3340  IF R$(J)="Dbb" OR R$(J)="C  " OR R$(J)="B# " THEN A(J)=25: GOTO 3460
  335. 3350  IF R$(J)="Db " OR R$(J)="C# " OR R$(J)="B##" THEN A(J)=26: GOTO 3460
  336. 3360  IF R$(J)="Ebb" OR R$(J)="D  " OR R$(J)="C##" THEN A(J)=27: GOTO 3460
  337. 3370  IF R$(J)="Fbb" OR R$(J)="Eb " OR R$(J)="D# " THEN A(J)=28: GOTO 3460
  338. 3380  IF R$(J)="Fb " OR R$(J)="E  " OR R$(J)="D##" THEN A(J)=29: GOTO 3460
  339. 3390  IF R$(J)="Gbb" OR R$(J)="F  " OR R$(J)="E# " THEN A(J)=30: GOTO 3460
  340. 3400  IF R$(J)="Gb " OR R$(J)="F# " OR R$(J)="E##" THEN A(J)=31: GOTO 3460
  341. 3410  IF R$(J)="Abb" OR R$(J)="G  " OR R$(J)="F##" THEN A(J)=32: GOTO 3460
  342. 3420  IF R$(J)="Ab " OR R$(J)="G# " THEN A(J)=33: GOTO 3460
  343. 3430  IF R$(J)="Bbb" OR R$(J)="A  " OR R$(J)="G##" THEN A(J)=34: GOTO 3460
  344. 3440  IF R$(J)="Cbb" OR R$(J)="Bb " OR R$(J)="A# " THEN A(J)=35: GOTO 3460
  345. 3450  IF R$(J)="Cb " OR R$(J)="B  " OR R$(J)="A##" THEN A(J)=36
  346. 3460  NEXT J
  347. 3470  FOR J=1 TO N+1
  348. 3480  IF A(J)<A(J-1) THEN A(J)=A(J)+12
  349. 3490  NEXT J
  350. 3500  RETURN
  351. 3510  DEF SEG = &H40 : POKE &H17, PEEK (&H17) OR 96
  352. 3520  RUN "MUSICBOX
  353.